using Spine.Unity;
using System.Collections;
using UnityEngine;

namespace Spine.Unity.Examples {
    // 控制Spine角色眨眼动画的自动播放
    public class SpineBlinkPlayer : MonoBehaviour 
    {
        // 眨眼动画使用的轨道编号 -- Spine动画轨道从0开始计数
        const int BlinkTrack = 1;

        // 眨眼动画资源引用
        public AnimationReferenceAsset blinkAnimation;
        
        // 最小延迟时间，控制眨眼间隔的下限
        public float minimumDelay = 0.15f;
        
        // 最大延迟时间，控制眨眼间隔的上限
        public float maximumDelay = 3f;

        // 初始化协程，控制眨眼动画的循环播放
        IEnumerator Start () {
            // 获取组件SkeletonAnimation引用
            SkeletonAnimation skeletonAnimation = GetComponent<SkeletonAnimation>();
            
            if (skeletonAnimation == null) yield break;

            // 无限循环播放眨眼动画
            while (true) {
                // 在指定轨道播放眨眼动画（第三个参数表示是否循环播放）
                skeletonAnimation.AnimationState.SetAnimation(BlinkTrack, blinkAnimation, false);
                
                // 等待随机延迟时间后再次触发（实现不规则眨眼效果）
                yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay));
            }
        }
    }
}